function fit = ptrue1(name)
N = 10000;
M = 3;
switch name
    case 'DTLZ1'
        R = UniformPoint(N,M)/2;
        fit = R;
    case 'DTLZ2'
        R = UniformPoint(N,M);
        R = R./repmat(sqrt(sum(R.^2,2)),1,3);
        fit = R;
    case 'WFG1'
        R = UniformPoint(N,M);
        c = ones(size(R,1),M);
        for i = 1 : size(R,1) 
            for j = 2 : M
                 temp = R(i,j)/R(i,1)*prod(1-c(i,M-j+2:M-1));
                 c(i,M-j+1) = (temp^2-temp+sqrt(2*temp))/(temp^2+1);
             end
         end
         x = acos(c)*2/pi;
         temp = (1-sin(pi/2*x(:,2))).*R(:,M)./R(:,M-1);
         a = 0 : 0.0001 : 1;
         E = abs(temp*(1-cos(pi/2*a))-1+repmat(a+cos(10*pi*a+pi/2)/10/pi,size(x,1),1));
         [~,rank] = sort(E,2);
         for i = 1 : size(x,1)
             x(i,1) = a(min(rank(i,1:10)));
         end
         R      = convex(x);
         R(:,M) = mixed(x);
         R      = repmat(2:2:2*M,size(R,1),1).*R;
         fit = R;
    case 'WFG2'
         R = UniformPoint(N,M);
         c = ones(size(R,1),M);
         for i = 1 : size(R,1) 
             for j = 2 : M
                 temp = R(i,j)/R(i,1)*prod(1-c(i,M-j+2:M-1));
                 c(i,M-j+1) = (temp^2-temp+sqrt(2*temp))/(temp^2+1);
             end
         end
         x = acos(c)*2/pi;
         temp = (1-sin(pi/2*x(:,2))).*R(:,M)./R(:,M-1);
         a = 0 : 0.0001 : 1;
         E = abs(temp*(1-cos(pi/2*a))-1+repmat(a.*cos(5*pi*a).^2,size(x,1),1));
         [~,rank] = sort(E,2);
         for i = 1 : size(x,1)
             x(i,1) = a(min(rank(i,1:10)));
         end
         R      = convex(x);
         R(:,M) = disc(x);
         R      = R(NDSort(R,1)==1,:);
         R      = repmat(2:2:2*M,size(R,1),1).*R;
         fit = R;
    case 'WFG3'
        X = linspace(0,1,N)';
        X = [X,zeros(N,3-2)+0.5,zeros(N,1)];
        R = linear1(X);
        R = repmat(2:2:2*3,size(R,1),1).*R;
        fit = R;
    case 'WFG4'
        R = UniformPoint(N,M);
        R = R./repmat(sqrt(sum(R.^2,2)),1,M);
        R = repmat(2:2:2*M,size(R,1),1).*R;
        fit = R;
    case 'IMOP4'
        R(:,1) = linspace(0,1,N)';
        R(:,2) = R(:,1) + sin(10*pi*R(:,1))/10;
        R(:,3) = 1 - R(:,1);
        fit = R;
    case 'IMOP5'
         [x,y] = meshgrid(linspace(0,1,ceil(sqrt(N/8*1.3))));
         x = [x(:),y(:)] - 0.5;
         x = 0.2*x(sum(x.^2,2)<=0.25,:);
         r = [0.4*cos((1:8)'*pi/4),0.4*sin((1:8)'*pi/4)];
         R = [];
         for i = 1 : size(r,1)
             R = [R;x+repmat(r(i,:),size(x,1),1)];
         end
         R = [R,0.5-sum(R,2)];
         fit = R;
    case 'IMOP6'
         [x,y] = meshgrid(linspace(0,1,ceil(sqrt(N))));
         R = [x(:),y(:)];
         r = max(0,min(sin(3*pi*R(:,1)).^2,sin(3*pi*R(:,2)).^2)-0.05);
         R(:,3) = 1 - sum(R,2)/2;
         R = R + repmat(ceil(r),1,3);
         R = R(NDSort(R,1)==1,:);
         fit = R;
    case 'IMOP7'
        R = UniformPoint(N,3);
        R = R./repmat(sqrt(sum(R.^2,2)),1,3);
        r = min(min(abs(R(:,1)-R(:,2)),abs(R(:,2)-R(:,3))),abs(R(:,3)-R(:,1)));
        R(r>0.1,:) = [];
        fit = R;
    case 'IMOP8'
        [x,y] = meshgrid(linspace(0,1,ceil(sqrt(N))));
        R = [x(:),y(:)];
        R = [R,3-sum(R.*(1+sin(19*pi.*R)),2)];
        R = R(NDSort(R,1)==1,:);
        fit = R;
        
end


end

